const { IncomingForm } = require('formidable')
const { join, basename } = require('path')

module.exports = {
    uploadFile(req) {
        return new Promise((resolve, reject) => {
            const form = new IncomingForm();
            // 设置文件上传目录
            form.uploadDir = join(__dirname, '../public/uploads');
            // 是否保存文件拓展名
            form.keepExtensions = true;
            // 允许上传多个文件
            form.multiples = true;
            // 单个文件最大 20mb 默认200
            form.maxFieldsSize = 20 * 1024 * 1024;
            // 解析表单数据
            form.parse(req, (err, fields, files) => {
                if (err) {
                    return reject(err)
                }
                // 循环files
                for (const [k, v] of Object.entries(files)) {
                    // 为了保证上传一个和上传多个文件时的数据格式统一，如果不是数组，则转换成数组
                    if (!Array.isArray(v)) {
                        files[k] = [v]
                    }
                    files[k] = files[k].map(v => {
                        return basename(v.path);
                    })
                }
                resolve({ fields, files })
            })
        }).catch(err => null)
    }
}